package net.jwtools.tmt.domain;

public interface IVisit {

	/**
	 * Return the unique identifier of this class
	 * @hibernate.id
	 *  generator-class="increment"
	 *  column="ID"
	 */
	public abstract java.lang.Long getId();

	/**
	 * Set the unique identifier of this class
	 * @param id the new ID
	 */
	public abstract void setId(java.lang.Long id);

	/**
	 * Return the value associated with the column: CHECKOUTDATE
	 */
	public abstract java.util.Date getCheckoutDate();

	/**
	 * Set the value related to the column: CHECKOUTDATE
	 * @param checkoutDate the CHECKOUTDATE value
	 */
	public abstract void setCheckoutDate(java.util.Date checkoutDate);

	/**
	 * Return the value associated with the column: CHECKINDATE
	 */
	public abstract java.util.Date getCheckinDate();

	/**
	 * Set the value related to the column: CHECKINDATE
	 * @param checkinDate the CHECKINDATE value
	 */
	public abstract void setCheckinDate(java.util.Date checkinDate);

	/**
	 * Return the value associated with the column: READYDATE
	 */
	public abstract java.util.Date getReadyDate();

	/**
	 * Set the value related to the column: READYDATE
	 * @param readyDate the READYDATE value
	 */
	public abstract void setReadyDate(java.util.Date readyDate);

	/**
	 * Return the value associated with the column: NOTHOME
	 */
	public abstract java.lang.Integer getNotHomeNumber();

	/**
	 * Set the value related to the column: NOTHOME
	 * @param notHomeNumber the NOTHOME value
	 */
	public abstract void setNotHomeNumber(java.lang.Integer notHomeNumber);

	/**
	 * Return the value associated with the column: TERRITORY_ID
	 */
	public abstract net.jwtools.tmt.domain.Territory getTerritory();

	/**
	 * Set the value related to the column: TERRITORY_ID
	 * @param territory the TERRITORY_ID value
	 */
	public abstract void setTerritory(net.jwtools.tmt.domain.Territory territory);

	/**
	 * Return the value associated with the column: CHECKOUTBY_ID
	 */
	public abstract net.jwtools.tmt.domain.Person getCheckoutBy();

	/**
	 * Return the value associated with the column: BELONGS_TO
	 */
	public abstract IVisit getBelongsTo ();
	
	/**
	 * Set the value related to the column: CHECKOUTBY_ID
	 * @param checkoutBy the CHECKOUTBY_ID value
	 */
	public abstract void setCheckoutBy (net.jwtools.tmt.domain.Person checkoutBy);
	/**
	 * Set the value related to the column: BELONGS_TO
	 * @param belongsTo the BELONGS_TO value
	 */
	public abstract void setBelongsTo (IVisit belongsTo);
	
	/**
	 * Return the value associated with the column: status
	 */
	public net.jwtools.tmt.domain.Status getStatus ();

	/**
	 * Set the value related to the column: status
	 * @param status the status value
	 */
	public void setStatus (net.jwtools.tmt.domain.Status status);
	/**
	 * Return the value associated with the column: VISIT_TYPE
	 */
	public VisitType getType ();

	/**
	 * Set the value related to the column: VISIT_TYPE
	 * @param type the VISIT_TYPE value
	 */
	public void setType (VisitType type);
	
	/**
	 * Convenience method get the number of days a visit is checkedout
	 */
	public Long getDaysCheckedout();
	
	/**
	 * Convenience method get the total number of days a visit is checkedout
	 */
	public Long getTotalDaysCheckedout();


}